package org.whole.examples.patterns;
import org.whole.lang.builders.IBuilderOperation;
import org.whole.lang.templates.AbstractTemplateFactory;
public class JavaPatternsActions extends AbstractTemplateFactory<org.whole.lang.actions.model.LanguageActionFactory> {
public void apply(IBuilderOperation op) {
org.whole.lang.actions.builders.IActionsBuilder b0 = (org.whole.lang.actions.builders.IActionsBuilder) op.wGetBuilder(org.whole.lang.actions.reflect.ActionsLanguageKit.URI);
b0.LanguageActionFactory_();
b0.URI("whole:org.whole.examples.patterns:JavaPatternsActions");
b0.Namespace("org.whole.examples.patterns");
b0.Name("JavaPatternsActions");
org.whole.lang.commons.builders.ICommonsBuilder b1 = (org.whole.lang.commons.builders.ICommonsBuilder) op.wGetBuilder(org.whole.lang.commons.reflect.CommonsLanguageKit.URI);
b1.Resolver();
b0.URI("http://lang.whole.org/Java");
b0.ToolbarActions_();
b1.Resolver();
b1.Resolver();
b1.Resolver();
b1.Resolver();
b1.Resolver();
b0._ToolbarActions();
b0.ContextMenuActions_();
b0.MenuActions_(2);
b0.GuardedAction_();
b0.Label("Generate concrete factory and products from Abstract Factory");
org.whole.lang.queries.builders.IQueriesBuilder b2 = (org.whole.lang.queries.builders.IQueriesBuilder) op.wGetBuilder(org.whole.lang.queries.reflect.QueriesLanguageKit.URI);
b2.Block_(2);
b2.Select_();
b2.Filter_();
b1.StageUpFragment_();
org.whole.lang.artifacts.builders.IArtifactsBuilder b3 = (org.whole.lang.artifacts.builders.IArtifactsBuilder) op.wGetBuilder(org.whole.lang.artifacts.reflect.ArtifactsLanguageKit.URI);
b3.Workspace_();
b1.Resolver();
b3.Projects_(1);
b3.Project_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#ProjectName");
b1.VarName("projectName");
b1.Quantifier("!");
b1._Variable();
b3.Natures_(0);
b3._Natures();
b1.Resolver();
b3.Artifacts_(1);
b3.FolderArtifact_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("sourceFolderName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b3.Artifacts_(2);
b3.PackageArtifact_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#PackageName");
b1.VarName("packageName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b3.Artifacts_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Artifact");
b1.VarName("productInterface");
b1.Quantifier("+");
b1._Variable();
b3._Artifacts();
b3._PackageArtifact();
b3.PackageArtifact_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#PackageName");
b1.VarName("implPackageName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b3.Artifacts_(2);
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Artifact");
b1.VarName("productImpl");
b1.Quantifier("+");
b1._Variable();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Artifact");
b1.VarName("concreteFactory");
b1.Quantifier("!");
b1._Variable();
b3._Artifacts();
b3._PackageArtifact();
b3._Artifacts();
b3._FolderArtifact();
b3._Artifacts();
b1.Resolver();
b3._Project();
b3._Projects();
b3._Workspace();
b1._StageUpFragment();
b2.VariableTest("workspace");
b2._Filter();
b2.Path_(3);
b2.Filter_();
b2.SelfStep();
b2.TypeTest("CompilationUnit");
b2._Filter();
b2.FeatureStep("types");
b2.Filter_();
b2.ChildStep();
b2.TypeTest("InterfaceDeclaration");
b2._Filter();
b2._Path();
b2.Sequence_(3);
b2.Filter_();
b2.Addition_();
b2.VariableRefStep("packageName");
b2.StringLiteral(".impl");
b2._Addition();
b2.VariableTest("implPackageName");
b2._Filter();
b2.Select_();
b2.Filter_();
b1.StageUpFragment_();
b3.FileArtifact_();
b3.NameWithExtension_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b3.Extension("java");
b3._NameWithExtension();
b1.Resolver();
b1.StageUpFragment_();
org.whole.lang.java.builders.IJavaBuilder b4 = (org.whole.lang.java.builders.IJavaBuilder) op.wGetBuilder(org.whole.lang.java.reflect.JavaLanguageKit.URI);
b4.CompilationUnit_();
b4.PackageDeclaration_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("implPackageName");
b1.Quantifier("!");
b1._Variable();
b4._PackageDeclaration();
b4.ImportDeclarations_(1);
b4.ImportDeclaration_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("packageName");
b1.Quantifier("!");
b1._Variable();
b4.ImportModifier(true);
b4.ImportModifier(false);
b4._ImportDeclaration();
b4._ImportDeclarations();
b4.TypeDeclarations_(1);
b4.ClassDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b1.Resolver();
b4.Types_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("abstractFactoryName");
b1.Quantifier("!");
b1._Variable();
b4._Types();
b4.BodyDeclarations_(4);
b4.FieldDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(2);
b4.Modifier("private");
b4.Modifier("static");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("abstractFactoryName");
b1.Quantifier("!");
b1._Variable();
b4.VariableDeclarationFragments_(1);
b4.VariableDeclarationFragment_();
b4.SimpleName("instance");
b4.ExtraDimensions(0);
b1.Resolver();
b4._VariableDeclarationFragment();
b4._VariableDeclarationFragments();
b4._FieldDeclaration();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(2);
b4.Modifier("public");
b4.Modifier("static");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("abstractFactoryName");
b1.Quantifier("!");
b1._Variable();
b4.SimpleName("instance");
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(2);
b4.IfStatement_();
b4.InfixExpression_();
b4.SimpleName("instance");
b4.InfixOperator("==");
b4.NullLiteral();
b4.Expressions_(0);
b4._Expressions();
b4._InfixExpression();
b4.ExpressionStatement_();
b4.Assignment_();
b4.SimpleName("instance");
b4.AssignmentOperator("=");
b4.ClassInstanceCreation_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleType");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b1.Resolver();
b4._ClassInstanceCreation();
b4._Assignment();
b4._ExpressionStatement();
b1.Resolver();
b4._IfStatement();
b4.ReturnStatement_();
b4.SimpleName("instance");
b4._ReturnStatement();
b4._Block();
b4._MethodDeclaration();
b4.ConstructorDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("protected");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(0);
b4._Block();
b4._ConstructorDeclaration();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#MethodDeclaration");
b1.VarName("factoryMethodImpl");
b1.Quantifier("+");
b1._Variable();
b4._BodyDeclarations();
b4._ClassDeclaration();
b4._TypeDeclarations();
b4._CompilationUnit();
b1._StageUpFragment();
b3._FileArtifact();
b1._StageUpFragment();
b2.VariableTest("concreteFactory");
b2._Filter();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("abstractFactoryName");
b2._Filter();
b2.Filter_();
b2.Addition_();
b2.VariableRefStep("abstractFactoryName");
b2.StringLiteral("Impl");
b2._Addition();
b2.VariableTest("concreteFactoryName");
b2._Filter();
b2.RemoveNames_();
b2.TemplateNames();
b2.Names_(1);
b2.Name("factoryMethodImpl");
b2._Names();
b2._RemoveNames();
b2._Select();
b2.Select_();
b2.Tuple_(3);
b2.Filter_();
b1.StageUpFragment_();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productType");
b1.Quantifier("!");
b1._Variable();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("factoryMethodName");
b1.Quantifier("!");
b1._Variable();
b1.StageDownFragment_();
b2.FeatureStep("parameters");
b1._StageDownFragment();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b4.ReturnStatement_();
b4.ClassInstanceCreation_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productImplName");
b1.Quantifier("!");
b1._Variable();
b4.Arguments_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("paramName");
b1.Quantifier("*");
b1._Variable();
b4._Arguments();
b1.Resolver();
b4._ClassInstanceCreation();
b4._ReturnStatement();
b4._Block();
b4._MethodDeclaration();
b1._StageUpFragment();
b2.VariableTest("factoryMethodImpl");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b3.FileArtifact_();
b3.NameWithExtension_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("productName");
b1.Quantifier("!");
b1._Variable();
b3.Extension("java");
b3._NameWithExtension();
b1.Resolver();
b1.StageUpFragment_();
b4.CompilationUnit_();
b4.PackageDeclaration_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("packageName");
b1.Quantifier("!");
b1._Variable();
b4._PackageDeclaration();
b4.ImportDeclarations_(0);
b4._ImportDeclarations();
b4.TypeDeclarations_(1);
b4.InterfaceDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("productName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b4.Types_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productType");
b1.Quantifier("!");
b1._Variable();
b4._Types();
b4.BodyDeclarations_(1);
b1.InlineVariable_();
b1.VarType("http://lang.whole.org/Java#MethodDeclaration");
b1.VarName("getset");
b1.Quantifier("*");
b1._InlineVariable();
b4._BodyDeclarations();
b4._InterfaceDeclaration();
b4._TypeDeclarations();
b4._CompilationUnit();
b1._StageUpFragment();
b3._FileArtifact();
b1._StageUpFragment();
b2.VariableTest("productInterface");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b3.FileArtifact_();
b3.NameWithExtension_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("productImplName");
b1.Quantifier("!");
b1._Variable();
b3.Extension("java");
b3._NameWithExtension();
b1.Resolver();
b1.StageUpFragment_();
b4.CompilationUnit_();
b4.PackageDeclaration_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("implPackageName");
b1.Quantifier("!");
b1._Variable();
b4._PackageDeclaration();
b4.ImportDeclarations_(1);
b4.ImportDeclaration_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("packageName");
b1.Quantifier("!");
b1._Variable();
b4.ImportModifier(true);
b4.ImportModifier(false);
b4._ImportDeclaration();
b4._ImportDeclarations();
b4.TypeDeclarations_(1);
b4.ClassDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("productImplName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b1.Resolver();
b4.Types_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productName");
b1.Quantifier("!");
b1._Variable();
b4._Types();
b4.BodyDeclarations_(3);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#FieldDeclaration");
b1.VarName("field");
b1.Quantifier("*");
b1._Variable();
b4.ConstructorDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("productImplName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SingleVariableDeclaration");
b1.VarName("param");
b1.Quantifier("*");
b1._Variable();
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Statement");
b1.VarName("init");
b1.Quantifier("*");
b1._Variable();
b4._Block();
b4._ConstructorDeclaration();
b1.InlineVariable_();
b1.VarType("http://lang.whole.org/Java#MethodDeclaration");
b1.VarName("getsetImpl");
b1.Quantifier("*");
b1._InlineVariable();
b4._BodyDeclarations();
b4._ClassDeclaration();
b4._TypeDeclarations();
b4._CompilationUnit();
b1._StageUpFragment();
b3._FileArtifact();
b1._StageUpFragment();
b2.VariableTest("productImpl");
b2._Filter();
b2._Tuple();
b2.Path_(2);
b2.FeatureStep("bodyDeclarations");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("MethodDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("factoryMethodName");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("returnType");
b2.VariableTest("productType");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b2.Sequence_(3);
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toClassName");
b4.Arguments_(1);
b4.SimpleName("factoryMethodName");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("productName");
b2._Filter();
b2.Filter_();
b2.Addition_();
b2.VariableRefStep("productName");
b2.StringLiteral("Impl");
b2._Addition();
b2.VariableTest("productImplName");
b2._Filter();
b2.Select_();
b2.Tuple_(6);
b2.Filter_();
b2.VariableRefStep("pname");
b2.VariableTest("paramName");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b4.FieldDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("private");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.VariableDeclarationFragments_(1);
b4.VariableDeclarationFragment_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._VariableDeclarationFragment();
b4._VariableDeclarationFragments();
b4._FieldDeclaration();
b1._StageUpFragment();
b2.VariableTest("field");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b4.SingleVariableDeclaration_();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.Varargs(false);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._SingleVariableDeclaration();
b1._StageUpFragment();
b2.VariableTest("param");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b4.ExpressionStatement_();
b4.Assignment_();
b4.FieldAccess_();
b4.ThisExpression_();
b1.Resolver();
b4._ThisExpression();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._FieldAccess();
b4.AssignmentOperator("=");
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._Assignment();
b4._ExpressionStatement();
b1._StageUpFragment();
b2.VariableTest("init");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b4.BodyDeclarations_(2);
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("getterName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b1.Resolver();
b4._MethodDeclaration();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b4.PrimitiveType("void");
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("setterName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(1);
b4.SingleVariableDeclaration_();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.Varargs(false);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._SingleVariableDeclaration();
b4._Parameters();
b1.Resolver();
b1.Resolver();
b1.Resolver();
b4._MethodDeclaration();
b4._BodyDeclarations();
b1._StageUpFragment();
b2.VariableTest("getset");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b4.BodyDeclarations_(2);
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("getterName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b4.ReturnStatement_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._ReturnStatement();
b4._Block();
b4._MethodDeclaration();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b4.PrimitiveType("void");
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("setterName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(1);
b4.SingleVariableDeclaration_();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.Varargs(false);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._SingleVariableDeclaration();
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b4.ExpressionStatement_();
b4.Assignment_();
b4.FieldAccess_();
b4.ThisExpression_();
b1.Resolver();
b4._ThisExpression();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._FieldAccess();
b4.AssignmentOperator("=");
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._Assignment();
b4._ExpressionStatement();
b4._Block();
b4._MethodDeclaration();
b4._BodyDeclarations();
b1._StageUpFragment();
b2.VariableTest("getsetImpl");
b2._Filter();
b2._Tuple();
b2.Path_(2);
b2.FeatureStep("parameters");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("pname");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("type");
b2.VariableTest("ptype");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b2.Sequence_(2);
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toGetterName");
b4.Arguments_(1);
b4.SimpleName("pname");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("getterName");
b2._Filter();
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toSetterName");
b4.Arguments_(1);
b4.SimpleName("pname");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("setterName");
b2._Filter();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2._Sequence();
b2.AddNames_();
b2.TemplateNames();
b2.Names_(1);
b2.Name("factoryMethodImpl");
b2._Names();
b2._AddNames();
b2._Select();
b2.Call_();
b2.Name("workspace");
b1.Resolver();
b2._Call();
b2._Block();
b2.ExpressionTest_();
b2.Path_(3);
b2.Filter_();
b2.SelfStep();
b2.TypeTest("CompilationUnit");
b2._Filter();
b2.FeatureStep("types");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("InterfaceDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
org.whole.lang.workflows.builders.IWorkflowsBuilder b5 = (org.whole.lang.workflows.builders.IWorkflowsBuilder) op.wGetBuilder(org.whole.lang.workflows.reflect.WorkflowsLanguageKit.URI);
b5.InvokeJavaClassMethod_();
b5.Text("check if self is an abstract factory");
b5.Variable("isAbstractFactory");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isAbstractFactory(org.whole.lang.java.model.InterfaceDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isAbstractFactory");
b2._Block();
b2._ExpressionTest();
b2.Some_();
b2.Path_(2);
b2.FeatureStep("bodyDeclarations");
b2.Filter_();
b2.ChildStep();
b2.TypeTest("MethodDeclaration");
b2._Filter();
b2._Path();
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is a factory method");
b5.Variable("isFactoryMethod");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isFactoryMethod");
b2._Block();
b2._ExpressionTest();
b2._Some();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b2._ExpressionTest();
b0._GuardedAction();
b0.GuardedAction_();
b0.Label("Generate products from Abstract Factory");
b2.Block_(2);
b2.Select_();
b2.Filter_();
b1.StageUpFragment_();
b3.Workspace_();
b1.Resolver();
b3.Projects_(1);
b3.Project_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("projectName");
b1.Quantifier("!");
b1._Variable();
b3.Natures_(0);
b3._Natures();
b1.Resolver();
b3.Artifacts_(1);
b3.FolderArtifact_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("sourceFolderName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b3.Artifacts_(1);
b3.PackageArtifact_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("packageName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b3.Artifacts_(1);
b1.StageDownFragment_();
b2.Select_();
b1.StageUpFragment_();
b3.FileArtifact_();
b3.NameWithExtension_();
b1.StageDownFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toClassName");
b4.Arguments_(1);
b4.SimpleName("factoryMethodName");
b4._Arguments();
b4._MethodInvocation();
b1._StageDownFragment();
b3.Extension("java");
b3._NameWithExtension();
b1.Resolver();
b1.StageUpFragment_();
b4.CompilationUnit_();
b4.PackageDeclaration_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("packageName");
b1.Quantifier("!");
b1._Variable();
b4._PackageDeclaration();
b4.ImportDeclarations_(0);
b4._ImportDeclarations();
b4.TypeDeclarations_(1);
b4.ClassDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.StageDownFragment_();
b1.StageDownFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toClassName");
b4.Arguments_(1);
b4.SimpleName("factoryMethodName");
b4._Arguments();
b4._MethodInvocation();
b1._StageDownFragment();
b1._StageDownFragment();
b1.Resolver();
b1.Resolver();
b4.Types_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productType");
b1.Quantifier("!");
b1._Variable();
b4._Types();
b4.BodyDeclarations_(4);
b1.StageDownFragment_();
b1.StageDownFragment_();
b2.Select_();
b1.StageUpFragment_();
b4.FieldDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("private");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.VariableDeclarationFragments_(1);
b4.VariableDeclarationFragment_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._VariableDeclarationFragment();
b4._VariableDeclarationFragments();
b4._FieldDeclaration();
b1._StageUpFragment();
b2.Path_(2);
b2.FeatureStep("parameters");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("pname");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("type");
b2.VariableTest("ptype");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b1.Resolver();
b2.TemplateNames();
b2._Select();
b1._StageDownFragment();
b1._StageDownFragment();
b4.ConstructorDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.StageDownFragment_();
b1.StageDownFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toClassName");
b4.Arguments_(1);
b4.SimpleName("factoryMethodName");
b4._Arguments();
b4._MethodInvocation();
b1._StageDownFragment();
b1._StageDownFragment();
b4.Parameters_(1);
b1.StageDownFragment_();
b1.StageDownFragment_();
b2.Select_();
b1.StageUpFragment_();
b4.SingleVariableDeclaration_();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.Varargs(false);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._SingleVariableDeclaration();
b1._StageUpFragment();
b2.Path_(2);
b2.FeatureStep("parameters");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("pname");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("type");
b2.VariableTest("ptype");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b1.Resolver();
b2.TemplateNames();
b2._Select();
b1._StageDownFragment();
b1._StageDownFragment();
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b1.StageDownFragment_();
b1.StageDownFragment_();
b2.Select_();
b1.StageUpFragment_();
b4.ExpressionStatement_();
b4.Assignment_();
b4.FieldAccess_();
b4.ThisExpression_();
b1.Resolver();
b4._ThisExpression();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._FieldAccess();
b4.AssignmentOperator("=");
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._Assignment();
b4._ExpressionStatement();
b1._StageUpFragment();
b2.Path_(2);
b2.FeatureStep("parameters");
b2.Filter_();
b2.ChildStep();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("pname");
b2._Filter();
b2._ExpressionTest();
b2._Filter();
b2._Path();
b1.Resolver();
b2.TemplateNames();
b2._Select();
b1._StageDownFragment();
b1._StageDownFragment();
b4._Block();
b4._ConstructorDeclaration();
b1.StageDownFragment_();
b1.StageDownFragment_();
b2.Select_();
b1.StageUpFragment_();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b1.StageDownFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toGetterName");
b4.Arguments_(1);
b4.SimpleName("pname");
b4._Arguments();
b4._MethodInvocation();
b1._StageDownFragment();
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b4.ReturnStatement_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._ReturnStatement();
b4._Block();
b4._MethodDeclaration();
b1._StageUpFragment();
b2.Path_(2);
b2.FeatureStep("parameters");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("pname");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("type");
b2.VariableTest("ptype");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b1.Resolver();
b2.TemplateNames();
b2._Select();
b1._StageDownFragment();
b1._StageDownFragment();
b1.StageDownFragment_();
b1.StageDownFragment_();
b2.Select_();
b1.StageUpFragment_();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b4.PrimitiveType("void");
b1.StageDownFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toSetterName");
b4.Arguments_(1);
b4.SimpleName("pname");
b4._Arguments();
b4._MethodInvocation();
b1._StageDownFragment();
b4.Parameters_(1);
b4.SingleVariableDeclaration_();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.Varargs(false);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._SingleVariableDeclaration();
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b4.ExpressionStatement_();
b4.Assignment_();
b4.FieldAccess_();
b4.ThisExpression_();
b1.Resolver();
b4._ThisExpression();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._FieldAccess();
b4.AssignmentOperator("=");
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._Assignment();
b4._ExpressionStatement();
b4._Block();
b4._MethodDeclaration();
b1._StageUpFragment();
b2.Path_(2);
b2.FeatureStep("parameters");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("pname");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("type");
b2.VariableTest("ptype");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b1.Resolver();
b2.TemplateNames();
b2._Select();
b1._StageDownFragment();
b1._StageDownFragment();
b4._BodyDeclarations();
b4._ClassDeclaration();
b4._TypeDeclarations();
b4._CompilationUnit();
b1._StageUpFragment();
b3._FileArtifact();
b1._StageUpFragment();
b2.Path_(4);
b2.FeatureStep("types");
b2.Filter_();
b2.ChildStep();
b2.TypeTest("InterfaceDeclaration");
b2._Filter();
b2.FeatureStep("bodyDeclarations");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("MethodDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("factoryMethodName");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("returnType");
b2.VariableTest("productType");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b1.Resolver();
b2.TemplateNames();
b2._Select();
b1._StageDownFragment();
b3._Artifacts();
b3._PackageArtifact();
b3._Artifacts();
b3._FolderArtifact();
b3._Artifacts();
b1.Resolver();
b3._Project();
b3._Projects();
b3._Workspace();
b1._StageUpFragment();
b2.VariableTest("workspace");
b2._Filter();
b2.SelfStep();
b1.Resolver();
b2.TemplateNames();
b2._Select();
b2.Call_();
b2.Name("workspace");
b1.Resolver();
b2._Call();
b2._Block();
b2.ExpressionTest_();
b2.Path_(3);
b2.Filter_();
b2.SelfStep();
b2.TypeTest("CompilationUnit");
b2._Filter();
b2.FeatureStep("types");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("InterfaceDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is an abstract factory");
b5.Variable("isAbstractFactory");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isAbstractFactory(org.whole.lang.java.model.InterfaceDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isAbstractFactory");
b2._Block();
b2._ExpressionTest();
b2.Some_();
b2.Path_(2);
b2.FeatureStep("bodyDeclarations");
b2.Filter_();
b2.ChildStep();
b2.TypeTest("MethodDeclaration");
b2._Filter();
b2._Path();
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is a factory method");
b5.Variable("isFactoryMethod");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isFactoryMethod");
b2._Block();
b2._ExpressionTest();
b2._Some();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b2._ExpressionTest();
b0._GuardedAction();
b0._MenuActions();
b0.MenuActions_(0);
b0._MenuActions();
b0.MenuActions_(0);
b0._MenuActions();
b0.MenuActions_(6);
b0.GuardedAction_();
b0.Label("Generate Factory Method implementation");
b2.Select_();
b1.StageUpFragment_();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productType");
b1.Quantifier("!");
b1._Variable();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("factoryMethodName");
b1.Quantifier("!");
b1._Variable();
b1.StageDownFragment_();
b2.FeatureStep("parameters");
b1._StageDownFragment();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b4.ReturnStatement_();
b4.ClassInstanceCreation_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productImplName");
b1.Quantifier("!");
b1._Variable();
b4.Arguments_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("paramName");
b1.Quantifier("*");
b1._Variable();
b4._Arguments();
b1.Resolver();
b4._ClassInstanceCreation();
b4._ReturnStatement();
b4._Block();
b4._MethodDeclaration();
b1._StageUpFragment();
b2.Path_(2);
b2.VariableRefStep("selectedEntities");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("MethodDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("factoryMethodName");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("returnType");
b2.VariableTest("productType");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b2.Sequence_(3);
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toClassName");
b4.Arguments_(1);
b4.SimpleName("factoryMethodName");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("productName");
b2._Filter();
b2.Filter_();
b2.Addition_();
b2.VariableRefStep("productName");
b2.StringLiteral("Impl");
b2._Addition();
b2.VariableTest("productImplName");
b2._Filter();
b2.Path_(2);
b2.FeatureStep("parameters");
b2.Filter_();
b2.ChildStep();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("paramName");
b2._Filter();
b2._ExpressionTest();
b2._Filter();
b2._Path();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2.ExpressionTest_();
b2.Path_(2);
b2.VariableRefStep("selectedEntities");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("MethodDeclaration");
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is a factory method");
b5.Variable("isFactoryMethod");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isFactoryMethod");
b2._Block();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b2._ExpressionTest();
b0._GuardedAction();
b0.GuardedAction_();
b0.Label("Generate Product interface");
b2.Select_();
b1.StageUpFragment_();
b4.CompilationUnit_();
b1.Resolver();
b4.ImportDeclarations_(0);
b4._ImportDeclarations();
b4.TypeDeclarations_(1);
b4.InterfaceDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("productName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b4.Types_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productType");
b1.Quantifier("!");
b1._Variable();
b4._Types();
b4.BodyDeclarations_(1);
b1.InlineVariable_();
b1.VarType("http://lang.whole.org/Java#MethodDeclaration");
b1.VarName("getset");
b1.Quantifier("*");
b1._InlineVariable();
b4._BodyDeclarations();
b4._InterfaceDeclaration();
b4._TypeDeclarations();
b4._CompilationUnit();
b1._StageUpFragment();
b2.Path_(2);
b2.VariableRefStep("selectedEntities");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("MethodDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("factoryMethodName");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("returnType");
b2.VariableTest("productType");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b2.Sequence_(2);
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toClassName");
b4.Arguments_(1);
b4.SimpleName("factoryMethodName");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("productName");
b2._Filter();
b2.Select_();
b2.Filter_();
b1.StageUpFragment_();
b4.BodyDeclarations_(2);
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("getterName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b1.Resolver();
b4._MethodDeclaration();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b4.PrimitiveType("void");
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("setterName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(1);
b4.SingleVariableDeclaration_();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.Varargs(false);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._SingleVariableDeclaration();
b4._Parameters();
b1.Resolver();
b1.Resolver();
b1.Resolver();
b4._MethodDeclaration();
b4._BodyDeclarations();
b1._StageUpFragment();
b2.VariableTest("getset");
b2._Filter();
b2.Path_(2);
b2.FeatureStep("parameters");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("pname");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("type");
b2.VariableTest("ptype");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b2.Sequence_(2);
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toGetterName");
b4.Arguments_(1);
b4.SimpleName("pname");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("getterName");
b2._Filter();
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toSetterName");
b4.Arguments_(1);
b4.SimpleName("pname");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("setterName");
b2._Filter();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2.ExpressionTest_();
b2.Path_(2);
b2.VariableRefStep("selectedEntities");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("MethodDeclaration");
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is a factory method");
b5.Variable("isFactoryMethod");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isFactoryMethod");
b2._Block();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b2._ExpressionTest();
b0._GuardedAction();
b0.GuardedAction_();
b0.Label("Generate Product implementation");
b2.Select_();
b1.StageUpFragment_();
b4.CompilationUnit_();
b1.Resolver();
b4.ImportDeclarations_(0);
b4._ImportDeclarations();
b4.TypeDeclarations_(1);
b4.ClassDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("productImplName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b1.Resolver();
b4.Types_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productName");
b1.Quantifier("!");
b1._Variable();
b4._Types();
b4.BodyDeclarations_(3);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#FieldDeclaration");
b1.VarName("field");
b1.Quantifier("*");
b1._Variable();
b4.ConstructorDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("productImplName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SingleVariableDeclaration");
b1.VarName("param");
b1.Quantifier("*");
b1._Variable();
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Statement");
b1.VarName("init");
b1.Quantifier("*");
b1._Variable();
b4._Block();
b4._ConstructorDeclaration();
b1.InlineVariable_();
b1.VarType("http://lang.whole.org/Java#MethodDeclaration");
b1.VarName("getsetImpl");
b1.Quantifier("*");
b1._InlineVariable();
b4._BodyDeclarations();
b4._ClassDeclaration();
b4._TypeDeclarations();
b4._CompilationUnit();
b1._StageUpFragment();
b2.Path_(2);
b2.VariableRefStep("selectedEntities");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("MethodDeclaration");
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("factoryMethodName");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b2.Sequence_(3);
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toClassName");
b4.Arguments_(1);
b4.SimpleName("factoryMethodName");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("productName");
b2._Filter();
b2.Filter_();
b2.Addition_();
b2.VariableRefStep("productName");
b2.StringLiteral("Impl");
b2._Addition();
b2.VariableTest("productImplName");
b2._Filter();
b2.Select_();
b2.Tuple_(4);
b2.Filter_();
b1.StageUpFragment_();
b4.FieldDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("private");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.VariableDeclarationFragments_(1);
b4.VariableDeclarationFragment_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._VariableDeclarationFragment();
b4._VariableDeclarationFragments();
b4._FieldDeclaration();
b1._StageUpFragment();
b2.VariableTest("field");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b4.SingleVariableDeclaration_();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.Varargs(false);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._SingleVariableDeclaration();
b1._StageUpFragment();
b2.VariableTest("param");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b4.ExpressionStatement_();
b4.Assignment_();
b4.FieldAccess_();
b4.ThisExpression_();
b1.Resolver();
b4._ThisExpression();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._FieldAccess();
b4.AssignmentOperator("=");
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._Assignment();
b4._ExpressionStatement();
b1._StageUpFragment();
b2.VariableTest("init");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b4.BodyDeclarations_(2);
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("getterName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b4.ReturnStatement_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._ReturnStatement();
b4._Block();
b4._MethodDeclaration();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b4.PrimitiveType("void");
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("setterName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(1);
b4.SingleVariableDeclaration_();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("ptype");
b1.Quantifier("!");
b1._Variable();
b4.Varargs(false);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4.ExtraDimensions(0);
b1.Resolver();
b4._SingleVariableDeclaration();
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b4.ExpressionStatement_();
b4.Assignment_();
b4.FieldAccess_();
b4.ThisExpression_();
b1.Resolver();
b4._ThisExpression();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._FieldAccess();
b4.AssignmentOperator("=");
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("pname");
b1.Quantifier("!");
b1._Variable();
b4._Assignment();
b4._ExpressionStatement();
b4._Block();
b4._MethodDeclaration();
b4._BodyDeclarations();
b1._StageUpFragment();
b2.VariableTest("getsetImpl");
b2._Filter();
b2._Tuple();
b2.Path_(2);
b2.FeatureStep("parameters");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("pname");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("type");
b2.VariableTest("ptype");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b2.Sequence_(2);
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toGetterName");
b4.Arguments_(1);
b4.SimpleName("pname");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("getterName");
b2._Filter();
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toSetterName");
b4.Arguments_(1);
b4.SimpleName("pname");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("setterName");
b2._Filter();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2.ExpressionTest_();
b2.Path_(2);
b2.VariableRefStep("selectedEntities");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("MethodDeclaration");
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is a factory method");
b5.Variable("isFactoryMethod");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isFactoryMethod");
b2._Block();
b2._ExpressionTest();
b2._And();
b2._Filter();
b2._Path();
b2._ExpressionTest();
b0._GuardedAction();
b0.GuardedAction_();
b0.Label("Generate Artifacts (no body) from Abstract Factory");
b2.Block_(1);
b2.Select_();
b2.Filter_();
b1.StageUpFragment_();
b3.Workspace_();
b1.Resolver();
b3.Projects_(1);
b3.Project_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#ProjectName");
b1.VarName("projectName");
b1.Quantifier("!");
b1._Variable();
b3.Natures_(0);
b3._Natures();
b1.Resolver();
b3.Artifacts_(1);
b3.FolderArtifact_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("sourceFolderName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b3.Artifacts_(2);
b3.PackageArtifact_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#PackageName");
b1.VarName("packageName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b3.Artifacts_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Artifact");
b1.VarName("productInterface");
b1.Quantifier("+");
b1._Variable();
b3._Artifacts();
b3._PackageArtifact();
b3.PackageArtifact_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#PackageName");
b1.VarName("implPackageName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b3.Artifacts_(2);
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Artifact");
b1.VarName("productImpl");
b1.Quantifier("+");
b1._Variable();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Artifact");
b1.VarName("concreteFactory");
b1.Quantifier("!");
b1._Variable();
b3._Artifacts();
b3._PackageArtifact();
b3._Artifacts();
b3._FolderArtifact();
b3._Artifacts();
b1.Resolver();
b3._Project();
b3._Projects();
b3._Workspace();
b1._StageUpFragment();
b2.VariableTest("workspace");
b2._Filter();
b2.Path_(3);
b2.Filter_();
b2.SelfStep();
b2.TypeTest("CompilationUnit");
b2._Filter();
b2.FeatureStep("types");
b2.Filter_();
b2.ChildStep();
b2.TypeTest("InterfaceDeclaration");
b2._Filter();
b2._Path();
b2.Sequence_(3);
b2.Filter_();
b2.Addition_();
b2.VariableRefStep("packageName");
b2.StringLiteral(".impl");
b2._Addition();
b2.VariableTest("implPackageName");
b2._Filter();
b2.Select_();
b2.Filter_();
b1.StageUpFragment_();
b3.FileArtifact_();
b3.NameWithExtension_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b3.Extension("java");
b3._NameWithExtension();
b1.Resolver();
b1.StageUpFragment_();
b4.CompilationUnit_();
b4.PackageDeclaration_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("implPackageName");
b1.Quantifier("!");
b1._Variable();
b4._PackageDeclaration();
b4.ImportDeclarations_(1);
b4.ImportDeclaration_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("packageName");
b1.Quantifier("!");
b1._Variable();
b4.ImportModifier(true);
b4.ImportModifier(false);
b4._ImportDeclaration();
b4._ImportDeclarations();
b4.TypeDeclarations_(1);
b4.ClassDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b1.Resolver();
b4.Types_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("abstractFactoryName");
b1.Quantifier("!");
b1._Variable();
b4._Types();
b4.BodyDeclarations_(3);
b4.FieldDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(2);
b4.Modifier("private");
b4.Modifier("static");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("abstractFactoryName");
b1.Quantifier("!");
b1._Variable();
b4.VariableDeclarationFragments_(1);
b4.VariableDeclarationFragment_();
b4.SimpleName("instance");
b4.ExtraDimensions(0);
b1.Resolver();
b4._VariableDeclarationFragment();
b4._VariableDeclarationFragments();
b4._FieldDeclaration();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(2);
b4.Modifier("public");
b4.Modifier("static");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("abstractFactoryName");
b1.Quantifier("!");
b1._Variable();
b4.SimpleName("instance");
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(2);
b4.IfStatement_();
b4.InfixExpression_();
b4.SimpleName("instance");
b4.InfixOperator("==");
b4.NullLiteral();
b4.Expressions_(0);
b4._Expressions();
b4._InfixExpression();
b4.ExpressionStatement_();
b4.Assignment_();
b4.SimpleName("instance");
b4.AssignmentOperator("=");
b4.ClassInstanceCreation_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleType");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b1.Resolver();
b4._ClassInstanceCreation();
b4._Assignment();
b4._ExpressionStatement();
b1.Resolver();
b4._IfStatement();
b4.ReturnStatement_();
b4.SimpleName("instance");
b4._ReturnStatement();
b4._Block();
b4._MethodDeclaration();
b4.ConstructorDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("protected");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(0);
b4._Block();
b4._ConstructorDeclaration();
b4._BodyDeclarations();
b4._ClassDeclaration();
b4._TypeDeclarations();
b4._CompilationUnit();
b1._StageUpFragment();
b3._FileArtifact();
b1._StageUpFragment();
b2.VariableTest("concreteFactory");
b2._Filter();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("abstractFactoryName");
b2._Filter();
b2.Filter_();
b2.Addition_();
b2.VariableRefStep("abstractFactoryName");
b2.StringLiteral("Impl");
b2._Addition();
b2.VariableTest("concreteFactoryName");
b2._Filter();
b2.TemplateNames();
b2._Select();
b2.Select_();
b2.Tuple_(2);
b2.Filter_();
b1.StageUpFragment_();
b3.FileArtifact_();
b3.NameWithExtension_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("productName");
b1.Quantifier("!");
b1._Variable();
b3.Extension("java");
b3._NameWithExtension();
b1.Resolver();
b1.StageUpFragment_();
b4.CompilationUnit_();
b4.PackageDeclaration_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("packageName");
b1.Quantifier("!");
b1._Variable();
b4._PackageDeclaration();
b4.ImportDeclarations_(0);
b4._ImportDeclarations();
b4.TypeDeclarations_(1);
b4.InterfaceDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("productName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b4.Types_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productType");
b1.Quantifier("!");
b1._Variable();
b4._Types();
b4.BodyDeclarations_(0);
b4._BodyDeclarations();
b4._InterfaceDeclaration();
b4._TypeDeclarations();
b4._CompilationUnit();
b1._StageUpFragment();
b3._FileArtifact();
b1._StageUpFragment();
b2.VariableTest("productInterface");
b2._Filter();
b2.Filter_();
b1.StageUpFragment_();
b3.FileArtifact_();
b3.NameWithExtension_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Artifacts#Name");
b1.VarName("productImplName");
b1.Quantifier("!");
b1._Variable();
b3.Extension("java");
b3._NameWithExtension();
b1.Resolver();
b1.StageUpFragment_();
b4.CompilationUnit_();
b4.PackageDeclaration_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("implPackageName");
b1.Quantifier("!");
b1._Variable();
b4._PackageDeclaration();
b4.ImportDeclarations_(1);
b4.ImportDeclaration_();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#QualifiedName");
b1.VarName("packageName");
b1.Quantifier("!");
b1._Variable();
b4.ImportModifier(true);
b4.ImportModifier(false);
b4._ImportDeclaration();
b4._ImportDeclarations();
b4.TypeDeclarations_(1);
b4.ClassDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("productImplName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b1.Resolver();
b4.Types_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productName");
b1.Quantifier("!");
b1._Variable();
b4._Types();
b4.BodyDeclarations_(0);
b4._BodyDeclarations();
b4._ClassDeclaration();
b4._TypeDeclarations();
b4._CompilationUnit();
b1._StageUpFragment();
b3._FileArtifact();
b1._StageUpFragment();
b2.VariableTest("productImpl");
b2._Filter();
b2._Tuple();
b2.Path_(2);
b2.FeatureStep("bodyDeclarations");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("MethodDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("factoryMethodName");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("returnType");
b2.VariableTest("productType");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b2.Sequence_(2);
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toClassName");
b4.Arguments_(1);
b4.SimpleName("factoryMethodName");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("productName");
b2._Filter();
b2.Filter_();
b2.Addition_();
b2.VariableRefStep("productName");
b2.StringLiteral("Impl");
b2._Addition();
b2.VariableTest("productImplName");
b2._Filter();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2._Block();
b2.ExpressionTest_();
b2.Path_(3);
b2.Filter_();
b2.SelfStep();
b2.TypeTest("CompilationUnit");
b2._Filter();
b2.FeatureStep("types");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("InterfaceDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is an abstract factory");
b5.Variable("isAbstractFactory");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isAbstractFactory(org.whole.lang.java.model.InterfaceDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isAbstractFactory");
b2._Block();
b2._ExpressionTest();
b2.Some_();
b2.Path_(2);
b2.FeatureStep("bodyDeclarations");
b2.Filter_();
b2.ChildStep();
b2.TypeTest("MethodDeclaration");
b2._Filter();
b2._Path();
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is a factory method");
b5.Variable("isFactoryMethod");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isFactoryMethod");
b2._Block();
b2._ExpressionTest();
b2._Some();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b2._ExpressionTest();
b0._GuardedAction();
b0.GuardedAction_();
b0.Label("Extract Factory Methods from an Abstract Factory");
b2.Path_(4);
b2.FeatureStep("types");
b2.ChildStep();
b2.FeatureStep("bodyDeclarations");
b2.Filter_();
b2.ChildStep();
b2.TypeTest("MethodDeclaration");
b2._Filter();
b2._Path();
b2.ExpressionTest_();
b2.Path_(3);
b2.Filter_();
b2.SelfStep();
b2.TypeTest("CompilationUnit");
b2._Filter();
b2.FeatureStep("types");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("InterfaceDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is an abstract factory");
b5.Variable("isAbstractFactory");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isAbstractFactory(org.whole.lang.java.model.InterfaceDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isAbstractFactory");
b2._Block();
b2._ExpressionTest();
b2.Some_();
b2.Path_(2);
b2.FeatureStep("bodyDeclarations");
b2.Filter_();
b2.ChildStep();
b2.TypeTest("MethodDeclaration");
b2._Filter();
b2._Path();
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is a factory method");
b5.Variable("isFactoryMethod");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isFactoryMethod");
b2._Block();
b2._ExpressionTest();
b2._Some();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b2._ExpressionTest();
b0._GuardedAction();
b0.GuardedAction_();
b0.Label("Generate Concrete Factory from an Abstract Factory");
b2.Select_();
b1.StageUpFragment_();
b4.CompilationUnit_();
b1.Resolver();
b4.ImportDeclarations_(0);
b4._ImportDeclarations();
b4.TypeDeclarations_(1);
b4.ClassDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b1.Resolver();
b4.Types_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("abstractFactoryName");
b1.Quantifier("!");
b1._Variable();
b4._Types();
b4.BodyDeclarations_(4);
b4.FieldDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(2);
b4.Modifier("private");
b4.Modifier("static");
b4._ExtendedModifiers();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("abstractFactoryName");
b1.Quantifier("!");
b1._Variable();
b4.VariableDeclarationFragments_(1);
b4.VariableDeclarationFragment_();
b4.SimpleName("instance");
b4.ExtraDimensions(0);
b1.Resolver();
b4._VariableDeclarationFragment();
b4._VariableDeclarationFragments();
b4._FieldDeclaration();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(2);
b4.Modifier("public");
b4.Modifier("static");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("abstractFactoryName");
b1.Quantifier("!");
b1._Variable();
b4.SimpleName("instance");
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(2);
b4.IfStatement_();
b4.InfixExpression_();
b4.SimpleName("instance");
b4.InfixOperator("==");
b4.NullLiteral();
b4.Expressions_(0);
b4._Expressions();
b4._InfixExpression();
b4.ExpressionStatement_();
b4.Assignment_();
b4.SimpleName("instance");
b4.AssignmentOperator("=");
b4.ClassInstanceCreation_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleType");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b1.Resolver();
b1.Resolver();
b4._ClassInstanceCreation();
b4._Assignment();
b4._ExpressionStatement();
b1.Resolver();
b4._IfStatement();
b4.ReturnStatement_();
b4.SimpleName("instance");
b4._ReturnStatement();
b4._Block();
b4._MethodDeclaration();
b4.ConstructorDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("protected");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("concreteFactoryName");
b1.Quantifier("!");
b1._Variable();
b4.Parameters_(0);
b4._Parameters();
b1.Resolver();
b1.Resolver();
b4.Block_(0);
b4._Block();
b4._ConstructorDeclaration();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#MethodDeclaration");
b1.VarName("factoryMethodImpl");
b1.Quantifier("+");
b1._Variable();
b4._BodyDeclarations();
b4._ClassDeclaration();
b4._TypeDeclarations();
b4._CompilationUnit();
b1._StageUpFragment();
b2.Path_(2);
b2.FeatureStep("types");
b2.Filter_();
b2.ChildStep();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("abstractFactoryName");
b2._Filter();
b2._ExpressionTest();
b2._Filter();
b2._Path();
b2.Sequence_(2);
b2.Filter_();
b2.Addition_();
b2.VariableRefStep("abstractFactoryName");
b2.StringLiteral("Impl");
b2._Addition();
b2.VariableTest("concreteFactoryName");
b2._Filter();
b2.Select_();
b2.Filter_();
b1.StageUpFragment_();
b4.MethodDeclaration_();
b1.Resolver();
b4.ExtendedModifiers_(1);
b4.Modifier("public");
b4._ExtendedModifiers();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productType");
b1.Quantifier("!");
b1._Variable();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("factoryMethodName");
b1.Quantifier("!");
b1._Variable();
b1.StageDownFragment_();
b2.FeatureStep("parameters");
b1._StageDownFragment();
b1.Resolver();
b1.Resolver();
b4.Block_(1);
b4.ReturnStatement_();
b4.ClassInstanceCreation_();
b1.Resolver();
b1.Resolver();
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#Type");
b1.VarName("productImplName");
b1.Quantifier("!");
b1._Variable();
b4.Arguments_(1);
b1.Variable_();
b1.VarType("http://lang.whole.org/Java#SimpleName");
b1.VarName("paramName");
b1.Quantifier("*");
b1._Variable();
b4._Arguments();
b1.Resolver();
b4._ClassInstanceCreation();
b4._ReturnStatement();
b4._Block();
b4._MethodDeclaration();
b1._StageUpFragment();
b2.VariableTest("factoryMethodImpl");
b2._Filter();
b2.Path_(2);
b2.FeatureStep("bodyDeclarations");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("MethodDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("factoryMethodName");
b2._Filter();
b2._ExpressionTest();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("returnType");
b2.VariableTest("productType");
b2._Filter();
b2._ExpressionTest();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b2.Sequence_(3);
b2.Filter_();
b1.SameStageFragment_();
b4.MethodInvocation_();
b4.SimpleName("org.whole.examples.helpers.Helpers");
b1.Resolver();
b4.SimpleName("toClassName");
b4.Arguments_(1);
b4.SimpleName("factoryMethodName");
b4._Arguments();
b4._MethodInvocation();
b1._SameStageFragment();
b2.VariableTest("productName");
b2._Filter();
b2.Filter_();
b2.Addition_();
b2.VariableRefStep("productName");
b2.StringLiteral("Impl");
b2._Addition();
b2.VariableTest("productImplName");
b2._Filter();
b2.Path_(2);
b2.FeatureStep("parameters");
b2.Filter_();
b2.ChildStep();
b2.ExpressionTest_();
b2.Filter_();
b2.FeatureStep("name");
b2.VariableTest("paramName");
b2._Filter();
b2._ExpressionTest();
b2._Filter();
b2._Path();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2._Sequence();
b2.TemplateNames();
b2._Select();
b2.ExpressionTest_();
b2.Path_(3);
b2.Filter_();
b2.SelfStep();
b2.TypeTest("CompilationUnit");
b2._Filter();
b2.FeatureStep("types");
b2.Filter_();
b2.ChildStep();
b2.And_(2);
b2.TypeTest("InterfaceDeclaration");
b2.And_(2);
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is an abstract factory");
b5.Variable("isAbstractFactory");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isAbstractFactory(org.whole.lang.java.model.InterfaceDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isAbstractFactory");
b2._Block();
b2._ExpressionTest();
b2.Some_();
b2.Path_(2);
b2.FeatureStep("bodyDeclarations");
b2.Filter_();
b2.ChildStep();
b2.TypeTest("MethodDeclaration");
b2._Filter();
b2._Path();
b2.ExpressionTest_();
b2.Block_(2);
b1.SameStageFragment_();
b5.InvokeJavaClassMethod_();
b5.Text("check if self is a factory method");
b5.Variable("isFactoryMethod");
b1.Resolver();
b5.StringLiteral("org.whole.examples.helpers.Helpers");
b5.StringLiteral("isFactoryMethod(org.whole.lang.java.model.MethodDeclaration)");
b5.Expressions_(1);
b5.Variable("self");
b5._Expressions();
b5._InvokeJavaClassMethod();
b1._SameStageFragment();
b2.VariableRefStep("isFactoryMethod");
b2._Block();
b2._ExpressionTest();
b2._Some();
b2._And();
b2._And();
b2._Filter();
b2._Path();
b2._ExpressionTest();
b0._GuardedAction();
b0._MenuActions();
b0.MenuActions_(0);
b0._MenuActions();
b1.Resolver();
b0._ContextMenuActions();
b0._LanguageActionFactory();
}
}