code: private static <T, G extends T> void generateConstructorAndFields(DexMaker dexMaker,
                                                                        TypeId<G> generatedType,
                                                                        TypeId<T> baseType) {
          final FieldId<G, Interceptor> interceptorField =
                  generatedType.getField(INTERCEPTOR_TYPE, FIELD_NAME_INTERCEPTOR);
          dexMaker.declare(interceptorField, PRIVATE, null);
  
          final TypeId<?>[] types = classArrayToTypeArray(CONSTRUCTOR_ARG_TYPES);
          final MethodId<?, ?> constructor = generatedType.getConstructor(types);
          final Code constructorCode = dexMaker.declare(constructor, PUBLIC);
  
          final Local<?>[] params = new Local[types.length];
          for (int i = 0; i < params.length; ++i) {
              params[i] = constructorCode.getParameter(i, types[i]);
          }
  
          final MethodId<T, ?> superConstructor = baseType.getConstructor(types);
          final Local<G> thisRef = constructorCode.getThis(generatedType);
          constructorCode.invokeDirect(superConstructor, null, thisRef, params);
          constructorCode.returnVoid();
      }
docs: Generates class field that holds a reference to the associated
  {@link org.lucasr.probe.Interceptor} instance and the {@link android.view.View} constructor.