@@ -0,0 +1,3172 @@
+/*%0A * Copyright 2000-2014 JetBrains s.r.o.%0A *%0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A * http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0A%0Apackage com.intellij.vcs.log.graph.impl.facade;%0A%0A%0Aimport com.intellij.openapi.util.Condition;%0Aimport com.intellij.vcs.log.graph.GraphCommit;%0Aimport com.intellij.vcs.log.graph.PermanentGraph;%0Aimport com.intellij.vcs.log.graph.VisibleGraph;%0Aimport com.intellij.vcs.log.graph.impl.permanent.PermanentCommitsInfo;%0Aimport com.intellij.vcs.log.graph.impl.permanent.PermanentLinearGraphBuilder;%0Aimport com.intellij.vcs.log.graph.impl.permanent.PermanentLinearGraphImpl;%0Aimport org.jetbrains.annotations.NotNull;%0Aimport org.jetbrains.annotations.Nullable;%0A%0Aimport java.util.List;%0Aimport java.util.Map;%0Aimport java.util.Set;%0A%0Apublic class PermanentGraphImpl%3CCommitId%3E implements PermanentGraph%3CCommitId%3E %7B%0A%0A  @NotNull%0A  public static %3CCommitId%3E PermanentGraphImpl%3CCommitId%3E newInstance(@NotNull List%3C? extends GraphCommit%3CCommitId%3E%3E graphCommits) %7B%0A    PermanentCommitsInfo%3CCommitId%3E commitIdPermanentCommitsInfo = PermanentCommitsInfo.newInstance(graphCommits);%0A%0A    PermanentLinearGraphBuilder%3CCommitId%3E permanentLinearGraphBuilder = PermanentLinearGraphBuilder.newInstance(graphCommits);%0A    PermanentLinearGraphImpl linearGraph = permanentLinearGraphBuilder.build();%0A    Map%3CCommitId, GraphCommit%3CCommitId%3E%3E commitsWithNotLoadParent = permanentLinearGraphBuilder.getCommitsWithNotLoadParent();%0A    return new PermanentGraphImpl%3CCommitId%3E(commitIdPermanentCommitsInfo, linearGraph, commitsWithNotLoadParent);%0A  %7D%0A%0A  @NotNull%0A  private final PermanentCommitsInfo%3CCommitId%3E myPermanentCommitsInfo;%0A%0A  @NotNull%0A  private final PermanentLinearGraphImpl myLinearGraph;%0A%0A  @NotNull%0A  private final Map%3CCommitId, GraphCommit%3CCommitId%3E%3E myCommitsWithNotLoadParent;%0A%0A  public PermanentGraphImpl(@NotNull PermanentCommitsInfo%3CCommitId%3E permanentCommitsInfo,%0A                            @NotNull PermanentLinearGraphImpl linearGraph,%0A                            @NotNull Map%3CCommitId, GraphCommit%3CCommitId%3E%3E commitsWithNotLoadParent) %7B%0A    myPermanentCommitsInfo = permanentCommitsInfo;%0A    myLinearGraph = linearGraph;%0A    myCommitsWithNotLoadParent = commitsWithNotLoadParent;%0A  %7D%0A%0A  @NotNull%0A  @Override%0A  public VisibleGraph%3CCommitId%3E setFilter(@Nullable Set%3CCommitId%3E headsOfVisibleBranches, @Nullable Condition%3CCommitId%3E filter) %7B%0A    return null;%0A  %7D%0A%0A  @NotNull%0A  @Override%0A  public List%3CGraphCommit%3CCommitId%3E%3E getAllCommits() %7B%0A    return null;%0A  %7D%0A%0A  @NotNull%0A  @Override%0A  public List%3CCommitId%3E getChildren(@NotNull CommitId commit) %7B%0A    return null;%0A  %7D%0A%0A  @NotNull%0A  @Override%0A  public Set%3CCommitId%3E getContainingBranches(@NotNull CommitId commit) %7B%0A    return null;%0A  %7D%0A%7D%0A

Add draft of PermanentGraphImpl.