@RequiresReadLock
    static @Nullable Larva hatch(@NotNull StackFrameProxyEx proxy, @Nullable PsiElement element) throws EvaluateException {
      if (element == null || !element.isValid()) return null;
      Project project = element.getProject();
      if (DumbService.isDumb(project)) return null;

      DfaAssistProvider provider = DfaAssistProvider.EP_NAME.forLanguage(element.getLanguage());
      if (provider == null) return null;
      try {
        if (!provider.locationMatches(element, proxy.location())) return null;
      }
      catch (IllegalArgumentException iea) {
        throw new EvaluateException(iea.getMessage(), iea);
      }
      PsiElement anchor = provider.getAnchor(element);
      if (anchor == null) return null;
      PsiElement body = provider.getCodeBlock(anchor);
      if (body == null) return null;
      DfaValueFactory factory = new DfaValueFactory(project);
      ControlFlow flow = DataFlowIRProvider.forElement(body, factory);
      if (flow == null) return null;
      long modificationStamp = PsiModificationTracker.getInstance(project).getModificationCount();
      int offset = flow.getStartOffset(anchor).getInstructionOffset();
      if (offset < 0) return null;
      Map<Value, List<DfaVariableValue>> jdiToDfa = createPreliminaryJdiMap(provider, anchor, factory, proxy);
      if (jdiToDfa.isEmpty()) return null;
      return new Larva(project, anchor, body, flow, factory, modificationStamp, provider, jdiToDfa, proxy, offset);
    }
@RequiresReadLock
    static @Nullable Larva hatch(@NotNull StackFrameProxyEx proxy, @Nullable PsiElement element)