package org.elixir_lang.psi;
import com.intellij.psi.PsiElement;
import org.elixir_lang.psi.call.Call;
import org.elixir_lang.psi.call.Named;
import org.elixir_lang.psi.call.StubBased;
import org.elixir_lang.psi.call.arguments.star.Parentheses;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import java.util.List;
/**
* <expression> dotInfixOperator parenthesesArguments parenthesesArguments? doBlock?
*/
public interface DotCall<Stub extends org.elixir_lang.psi.stub.call.Stub> extends Named, Quotable, StubBased<Stub> {
Quotable getDotInfixOperator();
List<ElixirParenthesesArguments> getParenthesesArgumentsList();
/**
* Unlike with a base {@link Call}, {@link Parentheses#primaryArguments} are {@code @NotNull} because the first set
* of parentheses has to be there or it wouldn't be a {@link Parentheses}
*/
@Contract(pure = true)
@Override
@NotNull
PsiElement[] primaryArguments();
}