code: public static CallSite bootstrap(Lookup caller, String callType, MethodType type, String name, int flags) {
              boolean safe = (flags&SAFE_NAVIGATION)!=0;
              boolean thisCall = (flags&THIS_CALL)!=0;
              boolean spreadCall = (flags&SPREAD_CALL)!=0;
              int callID;
              if (callType.equals(CALL_TYPES.METHOD.getCallSiteName())) {
                  callID = CALL_TYPES.METHOD.ordinal();
              } else if (callType.equals(CALL_TYPES.INIT.getCallSiteName())) {
                  callID = CALL_TYPES.INIT.ordinal();
              } else if (callType.equals(CALL_TYPES.GET.getCallSiteName())) {
                  callID = CALL_TYPES.GET.ordinal();
              } else if (callType.equals(CALL_TYPES.SET.getCallSiteName())) {
                  callID = CALL_TYPES.SET.ordinal();
              } else if (callType.equals(CALL_TYPES.CAST.getCallSiteName())) {
                  callID = CALL_TYPES.CAST.ordinal();
              }else {
                  throw new GroovyBugError("Unknown call type: "+callType);
              }
              return realBootstrap(caller, name, callID, type, safe, thisCall, spreadCall);
          }
docs: bootstrap method for method calls from Groovy compiled code with indy
  enabled. This method gets a flags parameter which uses the following
  encoding:<ul>
  <li>{@value #SAFE_NAVIGATION} is the flag value for safe navigation see {@link #SAFE_NAVIGATION}<li/>
  <li>{@value #THIS_CALL} is the flag value for a call on this see {@link #THIS_CALL}</li>
  </ul>
  @param caller - the caller
  @param callType - the type of the call
  @param type - the call site type
  @param name - the real method name
  @param flags - call flags
  @return the produced CallSite
  @since Groovy 2.1.0