test_class.declarator: rule = new CompilationRule()
test_class.modifier: @Rule
      public final
test_class.original_string: @Rule
      public final CompilationRule rule = new CompilationRule();
test_class.type: CompilationRule
test_class.var_name: rule
test_class.declarator: mDescription
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private ActorInterfaceDescription mDescription;
test_class.type: ActorInterfaceDescription
test_class.var_name: mDescription
test_class.declarator: mNamesProvider
test_class.modifier: @Mock
      private
test_class.original_string: @Mock
      private NamesProvider mNamesProvider;
test_class.type: NamesProvider
test_class.var_name: mNamesProvider
test_class.declarator: sNonNullMirror
test_class.modifier: private static
test_class.original_string: private static AnnotationMirror sNonNullMirror;
test_class.type: AnnotationMirror
test_class.var_name: sNonNullMirror
test_class.file: generator/src/test/java/com/truecaller/androidactors/ActorInterfaceGeneratedImplTest.java
test_class.identifier: ActorInterfaceGeneratedImplTest
test_case.body: @Test
      public void generate_nestedInClassName_NestedActor() {
          setTypeElement(ActorContainerClass.NestedActor.class);
  
          ActorInterfaceGeneratedImpl generated = new ActorInterfaceGeneratedImpl(mDescription);
          JavaFile file = generated.generate(mNamesProvider);
  
          Assert.assertEquals("com.truecaller.androidactors.cases", file.packageName);
          Assert.assertEquals("ActorContainerClass$NestedActor$Proxy", file.typeSpec.name);
      }
test_case.class_method_signature: ActorInterfaceGeneratedImplTest.generate_nestedInClassName_NestedActor()
test_case.full_signature: @Test public void generate_nestedInClassName_NestedActor()
test_case.identifier: generate_nestedInClassName_NestedActor
test_case.invocations: setTypeElement generate assertEquals assertEquals
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void generate_nestedInClassName_NestedActor()
focal_class.declarator: MESSAGE_SENDER_FIELD = "mMessageSender"
focal_class.modifier: private static final
focal_class.original_string: private static final String MESSAGE_SENDER_FIELD = "mMessageSender";
focal_class.type: String
focal_class.var_name: MESSAGE_SENDER_FIELD
focal_class.declarator: MESSAGE_SENDER_PARAM = "messageSender"
focal_class.modifier: private static final
focal_class.original_string: private static final String MESSAGE_SENDER_PARAM = "messageSender";
focal_class.type: String
focal_class.var_name: MESSAGE_SENDER_PARAM
focal_class.declarator: mActor
focal_class.modifier: @NotNull
      private final
focal_class.original_string: @NotNull
      private final TypeElement mActor;
focal_class.type: TypeElement
focal_class.var_name: mActor
focal_class.declarator: mMessages = new ArrayList<>()
focal_class.modifier: @NotNull
      private final
focal_class.original_string: @NotNull
      private final List<Message> mMessages = new ArrayList<>();
focal_class.type: List<Message>
focal_class.var_name: mMessages
focal_class.file: generator/src/main/java/com/truecaller/androidactors/ActorInterfaceGeneratedImpl.java
focal_class.identifier: ActorInterfaceGeneratedImpl
focal_class.interfaces: implements ActorInterfaceGenerator
focal_class.class_method_signature: ActorInterfaceGeneratedImpl.ActorInterfaceGeneratedImpl(@NotNull ActorInterfaceDescription _interface)
focal_class.full_signature:   ActorInterfaceGeneratedImpl(@NotNull ActorInterfaceDescription _interface)
focal_class.identifier: ActorInterfaceGeneratedImpl
focal_class.parameters: (@NotNull ActorInterfaceDescription _interface)
focal_class.signature:  ActorInterfaceGeneratedImpl(@NotNull ActorInterfaceDescription _interface)
focal_class.class_method_signature: ActorInterfaceGeneratedImpl.generate(NamesProvider namesProvider)
focal_class.full_signature: @NotNull public JavaFile generate(NamesProvider namesProvider)
focal_class.identifier: generate
focal_class.modifiers: @NotNull public
focal_class.parameters: (NamesProvider namesProvider)
focal_class.return: JavaFile
focal_class.signature: JavaFile generate(NamesProvider namesProvider)
focal_class.class_method_signature: ActorInterfaceGeneratedImpl.getProxyName()
focal_class.full_signature: @NotNull @Override public String getProxyName()
focal_class.identifier: getProxyName
focal_class.modifiers: @NotNull @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getProxyName()
focal_class.class_method_signature: ActorInterfaceGeneratedImpl.getProxyPackage()
focal_class.full_signature: @NotNull @Override public String getProxyPackage()
focal_class.identifier: getProxyPackage
focal_class.modifiers: @NotNull @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getProxyPackage()
focal_class.class_method_signature: ActorInterfaceGeneratedImpl.extractActorName(@NotNull Element element)
focal_class.full_signature: @NotNull private String extractActorName(@NotNull Element element)
focal_class.identifier: extractActorName
focal_class.modifiers: @NotNull private
focal_class.parameters: (@NotNull Element element)
focal_class.return: String
focal_class.signature: String extractActorName(@NotNull Element element)
focal_class.class_method_signature: ActorInterfaceGeneratedImpl.extractActorPackage(@NotNull Element element)
focal_class.full_signature: @NotNull private String extractActorPackage(@NotNull Element element)
focal_class.identifier: extractActorPackage
focal_class.modifiers: @NotNull private
focal_class.parameters: (@NotNull Element element)
focal_class.return: String
focal_class.signature: String extractActorPackage(@NotNull Element element)
focal_class.class_method_signature: ActorInterfaceGeneratedImpl.generateConstructor()
focal_class.full_signature: @NotNull private MethodSpec generateConstructor()
focal_class.identifier: generateConstructor
focal_class.modifiers: @NotNull private
focal_class.parameters: ()
focal_class.return: MethodSpec
focal_class.signature: MethodSpec generateConstructor()
focal_class.class_method_signature: ActorInterfaceGeneratedImpl.generateCompareMethod()
focal_class.full_signature: @NotNull private MethodSpec generateCompareMethod()
focal_class.identifier: generateCompareMethod
focal_class.modifiers: @NotNull private
focal_class.parameters: ()
focal_class.return: MethodSpec
focal_class.signature: MethodSpec generateCompareMethod()
focal_class.class_method_signature: ActorInterfaceGeneratedImpl.generateMethod(@NotNull Message message, @NotNull TypeSpec messageClass)
focal_class.full_signature: @NotNull private MethodSpec generateMethod(@NotNull Message message, @NotNull TypeSpec messageClass)
focal_class.identifier: generateMethod
focal_class.modifiers: @NotNull private
focal_class.parameters: (@NotNull Message message, @NotNull TypeSpec messageClass)
focal_class.return: MethodSpec
focal_class.signature: MethodSpec generateMethod(@NotNull Message message, @NotNull TypeSpec messageClass)
focal_method.body: @NotNull
      public JavaFile generate(NamesProvider namesProvider) {
          TypeSpec.Builder _class = TypeSpec.classBuilder(getProxyName());
          _class.addModifiers(Modifier.FINAL, Modifier.PUBLIC);
          _class.addField(MessageSender.class, MESSAGE_SENDER_FIELD, Modifier.PRIVATE, Modifier.FINAL);
          _class.addSuperinterface(ClassName.get(mActor));
          _class.addJavadoc("@hide");
  
          _class.addMethod(generateConstructor());
          _class.addMethod(generateCompareMethod());
  
          TypeName actorType = TypeName.get(mActor.asType());
          for (Message message : mMessages) {
              TypeSpec messageType = message.generate(actorType, namesProvider);
              _class.addType(messageType);
              _class.addMethod(generateMethod(message, messageType));
  
          }
  
          return JavaFile.builder(extractActorPackage(mActor), _class.build()).build();
      }
focal_method.class_method_signature: ActorInterfaceGeneratedImpl.generate(NamesProvider namesProvider)
focal_method.full_signature: @NotNull public JavaFile generate(NamesProvider namesProvider)
focal_method.identifier: generate
focal_method.invocations: classBuilder getProxyName addModifiers addField addSuperinterface get addJavadoc addMethod generateConstructor addMethod generateCompareMethod get asType generate addType addMethod generateMethod build builder extractActorPackage build
focal_method.modifiers: @NotNull public
focal_method.parameters: (NamesProvider namesProvider)
focal_method.return: JavaFile
focal_method.signature: JavaFile generate(NamesProvider namesProvider)