protected ServiceHandlerDefinitionContext copy(boolean clean) {
      ServiceHandlerDefinitionContext copy = new ServiceHandlerDefinitionContext();
      copy.root = root;
      if (!clean) {
        for (String qn : services.keySet()) {
          TypeDefinition d = services.get(qn);
          if (d.exists()) {
            copy.services.put(qn, d);
          }
        }
        copy.serviceAnnotations.addAll(serviceAnnotations);
      }

      return copy;
    }