
header position 0..62
module emfServices
  metamodel http://www.eclipse.org/emf/2002/Ecore (21..59)
  [comment @main (75..80) /] (66..82)
  
  public template test(p : EPackage (106..125))
  @main
    [let 
    c : EClass = .oclAsType(.getEClassifier(p, 'ClasseB'), EClass) (156..208) (136..208)
      [let 
      attr : EAttribute = .getEStructuralFeature(.eClass(c), 'name') (247..287) (220..287)
        [let 
        ref : EReference = .getEStructuralFeature(.eClass(c), 'eSuperTypes') (327..374) (301..374)
          [file url 'testEObject' (392..405) mode overwrite
            @Test 'test'.oclAsType(String) =>  (430..464)
            [.oclAsType('test', java.lang.String) (465..489)/] (newLineNeeded (464..493)
            @Test c.oclIsUndefined() =>  (503..531)
            [.equals(c, null) (532..540)/] (newLineNeeded (531..544)
            @Test c.oclIsTypeOf(EClass) =>  (554..585)
            [.oclIsTypeOf(c, EClass) (586..614)/] (newLineNeeded (585..618)
            @Test c.oclIsTypeOf(EPackage) =>  (628..661)
            [.oclIsTypeOf(c, EPackage) (662..692)/] (newLineNeeded (661..696)
            @Test c.oclIsKindOf(EClass) =>  (706..737)
            [.oclIsKindOf(c, EClass) (738..766)/] (newLineNeeded (737..770)
            @Test c.oclIsKindOf(EPackage) =>  (780..813)
            [.oclIsKindOf(c, EPackage) (814..844)/] (newLineNeeded (813..848)
            @Test c.oclAsType(EClass).name =>  (858..892)
            [.aqlFeatureAccess(.oclAsType(c, EClass), 'name') (893..924)/] (newLineNeeded (892..928)
            @Test c.toString().startsWith('org.eclipse.emf.ecore.impl.EClassImpl@') =>  (938..1013)
            [.startsWith(.toString(c), 'org.eclipse.emf.ecore.impl.EClassImpl@') (1014..1079)/] (newLineNeeded (1013..1083)
            @Test c.siblings(EClass)->collect(name) =>  (1093..1136)
            [->collect(.siblings(c, EClass), temp1 = .siblings(c, EClass) | .aqlFeatureAccess(temp1, 'name')) (1137..1191)/] (newLineNeeded (1136..1195)
            @Test c.precedingSiblings(EClass)->collect(name) =>  (1205..1257)
            [->collect(.precedingSiblings(c, EClass), temp2 = .precedingSiblings(c, EClass) | .aqlFeatureAccess(temp2, 'name')) (1258..1321)/] (newLineNeeded (1257..1325)
            @Test c.precedingSiblings()->collect(name) =>  (1335..1381)
            [->collect(.precedingSiblings(c), temp3 = .precedingSiblings(c) | .aqlFeatureAccess(p, 'name')) (1382..1428)/] (newLineNeeded (1381..1432)
            @Test c.followingSiblings(EClass)->collect(name) =>  (1442..1494)
            [->collect(.followingSiblings(c, EClass), temp4 = .followingSiblings(c, EClass) | .aqlFeatureAccess(temp4, 'name')) (1495..1558)/] (newLineNeeded (1494..1562)
            @Test c.followingSiblings()->collect(name) =>  (1572..1618)
            [->collect(.followingSiblings(c), temp5 = .followingSiblings(c) | .aqlFeatureAccess(p, 'name')) (1619..1665)/] (newLineNeeded (1618..1669)
            @Test c.eResource().toString().startsWith('org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl@') =>  (1679..1775)
            [.startsWith(.toString(.eResource(c)), 'org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl@') (1776..1862)/] (newLineNeeded (1775..1866)
            @Test c.eGet('name') =>  (1876..1900)
            [.eGet(c, 'name') (1901..1915)/] (newLineNeeded (1900..1919)
            @Test c.eGet(c.eClass().getEStructuralFeature('name')) =>  (1929..1987)
            [.eGet(c, .getEStructuralFeature(.eClass(c), 'name')) (1988..2036)/] (newLineNeeded (1987..2040)
            @Test c.eGet(c.eClass().getEStructuralFeature('name'), true) =>  (2050..2114)
            [.eGet(c, .getEStructuralFeature(.eClass(c), 'name'), true) (2115..2169)/] (newLineNeeded (2114..2173)
            @Test c.eContainmentFeature().name =>  (2183..2221)
            [.aqlFeatureAccess(.eContainmentFeature(c), 'name') (2222..2250)/] (newLineNeeded (2221..2254)
            @Test c.eContainingFeature().name =>  (2264..2301)
            [.aqlFeatureAccess(.eContainingFeature(c), 'name') (2302..2329)/] (newLineNeeded (2301..2333)
            @Test c.eContainer().oclIsTypeOf(EPackage) =>  (2343..2389)
            [.oclIsTypeOf(.eContainer(c), EPackage) (2390..2433)/] (newLineNeeded (2389..2437)
            @Test c.eContainer(EPackage).name =>  (2447..2484)
            [.aqlFeatureAccess(.eContainer(c, EPackage), 'name') (2485..2519)/] (newLineNeeded (2484..2523)
            @Test c.eClass().name =>  (2533..2558)
            [.aqlFeatureAccess(.eClass(c), 'name') (2559..2574)/] (newLineNeeded (2558..2578)
            @Test c.ancestors(EPackage)->collect(name) =>  (2588..2634)
            [->collect(.ancestors(c, EPackage), temp6 = .ancestors(c, EPackage) | .aqlFeatureAccess(temp6, 'name')) (2635..2692)/] (newLineNeeded (2634..2696)
            @Test c.ancestors()->collect(name) =>  (2706..2744)
            [->collect(.ancestors(c), temp7 = .ancestors(c) | .aqlFeatureAccess(p, 'name')) (2745..2783)/] (newLineNeeded (2744..2787)
            @Test c.eAllContents(EAttribute)->collect(name) =>  (2797..2848)
            [->collect(.eAllContents(c, EAttribute), temp8 = .eAllContents(c, EAttribute) | .aqlFeatureAccess(temp8, 'name')) (2849..2911)/] (newLineNeeded (2848..2915)
            @Test c <> c.eContainer() =>  (2925..2954)
            [.differs(c, .eContainer(c)) (2955..2974)/] (newLineNeeded (2954..2978)
            @Test c <> c =>  (2988..3004)
            [.differs(c, c) (3005..3011)/] (newLineNeeded (3004..3015)
            @Test c = c.eContainer() =>  (3025..3053)
            [.equals(c, .eContainer(c)) (3054..3072)/] (newLineNeeded (3053..3076)
            @Test c = c =>  (3086..3101)
            [.equals(c, c) (3102..3107)/] (newLineNeeded (3101..3111)
            @Test c.eAllContents()->collect(name) =>  (3121..3162)
            [->collect(.eAllContents(c), temp9 = .eAllContents(c) | .aqlFeatureAccess(p, 'name')) (3163..3204)/] (newLineNeeded (3162..3208)
            @Test c.siblings()->collect(name) =>  (3218..3255)
            [->collect(.siblings(c), temp10 = .siblings(c) | .aqlFeatureAccess(p, 'name')) (3256..3294)/] (newLineNeeded (3255..3298)
            @Test c.eContents()->collect(name) =>  (3308..3346)
            [->collect(.eContents(c), temp11 = .eContents(c) | .aqlFeatureAccess(p, 'name')) (3347..3386)/] (newLineNeeded (3346..3390)
            @Test c.eCrossReferences()->collect(name) =>  (3400..3445)
            [->collect(.eCrossReferences(c), temp12 = .eCrossReferences(c) | .aqlFeatureAccess(p, 'name')) (3446..3492)/] (newLineNeeded (3445..3496)
            @Test c.oclAsSet().name =>  (3506..3533)
            [->collect(->asSequence(->asSet(c)), temp13 = ->asSequence(->asSet(c)) | .aqlFeatureAccess(temp13, 'name')) (3534..3589)/] (newLineNeeded (3533..3593) (418..3601)
          [/file] (385..3608)
           (newLineNeeded) (3608..3610) (375..3616)
        [/let] (296..3622)
         (newLineNeeded) (3622..3624) (288..3628)
      [/let] (215..3634)
       (newLineNeeded) (3634..3636) (209..3638)
    [/let] (131..3644)
     (newLineNeeded) (3644..3646) (127..3646)
  [/template] (84..3657) (0..3657)