{{header}}
{{object 1 0}} <<
  /Type /Catalog
  /Pages 2 0 R
  /AcroForm 4 0 R
  /OpenAction 10 0 R
>>
endobj
{{object 2 0}} <<
  /Type /Pages
  /Count 1
  /Kids [
    3 0 R
  ]
>>
endobj
% Page number 0.
{{object 3 0}} <<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [0 0 612 792]
>>
endobj
% Forms
{{object 4 0}} <<
  /Fields [5 0 R]
>>
endobj
% Fields
{{object 5 0}} <<
  /T (MyField)
  /Type /Annot
  /Subtype /Widget
  /Rect [100 100 400 400]
  /Kids [
    6 0 R
    7 0 R
    8 0 R
    9 0 R
  ]
>>
endobj
{{object 6 0}} <<
  /FT /Tx
  /Parent 5 0 R
  /T (Sub_X)
  /Type /Annot
  /Subtype /Widget
  /Rect [200 200 220 220]
>>
endobj
{{object 7 0}} <<
  /FT /Tx
  /Parent 5 0 R
  /T (Sub_A)
  /Type /Annot
  /Subtype /Widget
  /Rect [220 220 240 240]
>>
endobj
{{object 8 0}} <<
  /FT /Tx
  /Parent 5 0 R
  /T (Sub_Z)
  /Type /Annot
  /Subtype /Widget
  /Rect [240 240 260 260]
>>
endobj
{{object 9 0}} <<
  /FT /Tx
  /Parent 5 0 R
  /T (Sub_B)
  /Type /Annot
  /Subtype /Widget
  /Rect [260 260 280 280]
>>
endobj
% OpenAction action
{{object 10 0}} <<
  /Type /Action
  /S /JavaScript
  /JS 11 0 R
>>
endobj
% JS program to exexute
{{object 11 0}} <<
  {{streamlen}}
>>
stream
function testGetField() {
  try {
    var field = this.getField("MyField");
    app.alert("field is " + field.name);
    var sub_a = this.getField("MyField.Sub_A");
    app.alert("sub_a is " + sub_a.name);
    var nonesuch = this.getField("MyField.nonesuch");
    app.alert("nonesuch is " + nonesuch);
  } catch (e) {
    app.alert("Unexpected error: " + e);
  }
}

function testGetArray() {
  try {
    var subs = this.getField("MyField").getArray();
    app.alert("found " + subs.length + " sub-fields:");
    for (i = 0; i < subs.length; ++i) {
      app.alert(subs[i].name);
    }
  } catch (e) {
    app.alert("Unexpected error: " + e);
  }
}

function testMethods() {
  try {
    var field = this.getField("MyField");
  } catch (e) {
    app.alert("Unexpected error: " + e);
  }
}

testGetField();
testGetArray();
testMethods();
endstream
endobj
{{xref}}
{{trailer}}
{{startxref}}
%%EOF
