// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package icons;

import com.intellij.ui.IconManager;
import org.jetbrains.annotations.NotNull;

import javax.swing.*;

/**
 * NOTE THIS FILE IS AUTO-GENERATED
 * DO NOT EDIT IT BY HAND, run "Generate icon classes" configuration instead
 */
public final class PythonPsiApiIcons {
  private static @NotNull Icon load(@NotNull String path) {
    return IconManager.getInstance().getIcon(path, PythonPsiApiIcons.class);
  }


  public final static class Nodes {
    /** 16x16 */ public static final @NotNull Icon Cyan_dot = load("/icons/com/jetbrains/python/nodes/cyan-dot.svg");
    /** 16x16 */ public static final @NotNull Icon Lock = load("/icons/com/jetbrains/python/nodes/lock.svg");
    /** 16x16 */ public static final @NotNull Icon Red_inv_triangle = load("/icons/com/jetbrains/python/nodes/red-inv-triangle.svg");

  }
  /** 16x16 */ public static final @NotNull Icon PropertyDeleter = load("/icons/com/jetbrains/python/propertyDeleter.svg");
  /** 16x16 */ public static final @NotNull Icon PropertyGetter = load("/icons/com/jetbrains/python/propertyGetter.svg");
  /** 16x16 */ public static final @NotNull Icon PropertySetter = load("/icons/com/jetbrains/python/propertySetter.svg");
  /** 16x16 */ public static final @NotNull Icon PythonFile = load("/icons/com/jetbrains/python/pythonFile.svg");
}
