private void createAndRegisterInjected(Language forcedLanguage) {
    StringBuilder decodedChars = new StringBuilder();
    Place place = new Place();
    for (PlaceInfo info : placeInfos) {
      ShredImpl shred = createShred(info, decodedChars, myHostPsiFile);
      place.add(shred);
      info.newInjectionHostRange = shred.getSmartPointer().getRange();
    }
    DocumentWindowImpl documentWindow = new DocumentWindowImpl(myHostDocument, place);
    String fileName = PathUtil.makeFileName(myHostVirtualFile.getName(), fileExtension);

    ASTNode[] parsedNodes =
      parseFile(myLanguage, forcedLanguage, documentWindow, myHostVirtualFile, myHostDocument, myHostPsiFile, myProject, documentWindow.getText(),
                placeInfos, decodedChars, fileName, myDocumentManagerBase);
    for (ASTNode node : parsedNodes) {
      PsiFile psiFile = (PsiFile)node.getPsi();
      InjectedFileViewProvider viewProvider = (InjectedFileViewProvider)psiFile.getViewProvider();
      synchronized (InjectedLanguageManagerImpl.ourInjectionPsiLock) {
        if (psiFile.getLanguage() == viewProvider.getBaseLanguage()) {
          psiFile = createOrMergeInjectedFile(myHostPsiFile, myDocumentManagerBase, place, documentWindow, psiFile, viewProvider);
          addFileToResults(psiFile);
        }
        else {
          cacheEverything(place, documentWindow, viewProvider, psiFile);
        }

        DocumentWindowImpl retrieved = (DocumentWindowImpl)myDocumentManagerBase.getDocument(psiFile);
        assertEverythingIsAllright(myDocumentManagerBase, retrieved, psiFile);
      }
    }
  }
private void createAndRegisterInjected(Language forcedLanguage)