code: private void outputInterfaceField(GinjectorBindings bindings, SourceWriteUtil sourceWriteUtil,
        SourceWriter writer) {
  
      // Only the root injector has an interface binding.
      if (bindings.getParent() != null) {
        return;
      }
  
      Class<?> boundGinjectorInterface = getBoundGinjector(bindings);
  
      if (boundGinjectorInterface == null) {
        // Sanity-check: if this fails, then we somehow didn't bind the injector
        // interface in the root module (the root module should always generate a
        // binding for the injector).
        errorManager.logError("Injector interface not bound in the root module.");
        return;
      }
  
      NameGenerator nameGenerator = bindings.getNameGenerator();
      String fieldName = nameGenerator.getGinjectorInterfaceFieldName();
      String getterName = nameGenerator.getGinjectorInterfaceGetterMethodName();
  
      writer.beginJavaDocComment();
      writer.print("The implementation of " + boundGinjectorInterface);
      writer.endJavaDocComment();
      writer.println("private final %s %s;", boundGinjectorInterface.getCanonicalName(), fieldName);
  
      sourceWriteUtil.writeMethod(writer,
          String.format("public %s %s()", boundGinjectorInterface.getCanonicalName(), getterName),
          String.format("return %s;", fieldName));
    }
docs: Writes code to store and retrieve the current injector interface, if one is
  bound.