package org.elixir_lang.structure_view.element;
import org.jetbrains.annotations.Nullable;
/**
* The visibility (public or private) or the {@link CallDefinition} or {@link CallDefinitionClause}
*/
public interface Visible {
enum Visibility {
PUBLIC,
PRIVATE
}
/**
* The visibility of the element.
*
* @return {@link Visibility#PUBLIC} for public call definitions ({@code def} and {@code defmacro});
* {@link Visibility#PRIVATE} for private call definitions ({@code defp} and {@code defmacrop}); {@code null} for
* a mix of visibilities, such as when a call definition has a mix of call definition clause visibilities, which
* is invalid code, but can occur temporarily while code is being edited.
*/
@Nullable
Visibility visibility();
}