\RequirePackage{minted}
\newmintinline[clean]{clean}{style=bw}
\newmintinline[abc]{text}{style=bw}

\RequirePackage{tikz}
\pgfkeys{/tikz/node args/.store in=\clean@args}
\pgfkeys{/tikz/clean/.style={%
		every node/.style={
			clean node,
			node args=0,
			draw,
			minimum height=1.5em
		},
		->,
		node distance=1em
}}

\newdimen\clean@ya
\newdimen\clean@yb
\newdimen\clean@x
\pgfdeclareshape{clean node}{
	\inheritsavedanchors[from=rectangle]
	\inheritanchor[from=rectangle]{west}
	\inheritanchor[from=rectangle]{north}
	\inheritanchor[from=rectangle]{east}
	\inheritanchor[from=rectangle]{south}
	\inheritanchor[from=rectangle]{north west}
	\inheritanchor[from=rectangle]{north east}
	\inheritanchor[from=rectangle]{south west}
	\inheritanchor[from=rectangle]{south east}
	\anchor{arg1}{\pgf@process{\northeast}\pgf@xa=\pgf@x\pgf@process{\pgf@anchor@rectangle@center}\pgf@x=\pgf@xa\advance\pgf@x by 3pt}
	\anchor{arg2}{\pgf@process{\northeast}\pgf@xa=\pgf@x\pgf@process{\pgf@anchor@rectangle@center}\pgf@x=\pgf@xa\advance\pgf@x by 9pt}
	\anchor{arg3}{\pgf@process{\northeast}\pgf@xa=\pgf@x\pgf@process{\pgf@anchor@rectangle@center}\pgf@x=\pgf@xa\advance\pgf@x by 15pt}
	\anchor{arg1.west}{\pgf@process{\northeast}\pgf@xa=\pgf@x\pgf@process{\pgf@anchor@rectangle@center}\pgf@x=\pgf@xa\advance\pgf@x by 0pt}
	\anchor{arg2.west}{\pgf@process{\northeast}\pgf@xa=\pgf@x\pgf@process{\pgf@anchor@rectangle@center}\pgf@x=\pgf@xa\advance\pgf@x by 6pt}
	\anchor{arg3.west}{\pgf@process{\northeast}\pgf@xa=\pgf@x\pgf@process{\pgf@anchor@rectangle@center}\pgf@x=\pgf@xa\advance\pgf@x by 12pt}
	\anchor{arg1.north}{\pgf@process{\northeast}\advance\pgf@x by 3pt}
	\anchor{arg2.north}{\pgf@process{\northeast}\advance\pgf@x by 9pt}
	\anchor{arg3.north}{\pgf@process{\northeast}\advance\pgf@x by 15pt}
	\anchor{arg1.east}{\pgf@process{\northeast}\pgf@xa=\pgf@x\pgf@process{\pgf@anchor@rectangle@center}\pgf@x=\pgf@xa\advance\pgf@x by 6pt}
	\anchor{arg2.east}{\pgf@process{\northeast}\pgf@xa=\pgf@x\pgf@process{\pgf@anchor@rectangle@center}\pgf@x=\pgf@xa\advance\pgf@x by 12pt}
	\anchor{arg3.east}{\pgf@process{\northeast}\pgf@xa=\pgf@x\pgf@process{\pgf@anchor@rectangle@center}\pgf@x=\pgf@xa\advance\pgf@x by 18pt}
	\anchor{arg1.south}{\pgf@process{\southwest}\pgf@ya=\pgf@y\pgf@process{\northeast}\pgf@y=\pgf@ya\advance\pgf@x by 3pt}
	\anchor{arg2.south}{\pgf@process{\southwest}\pgf@ya=\pgf@y\pgf@process{\northeast}\pgf@y=\pgf@ya\advance\pgf@x by 9pt}
	\anchor{arg3.south}{\pgf@process{\southwest}\pgf@ya=\pgf@y\pgf@process{\northeast}\pgf@y=\pgf@ya\advance\pgf@x by 15pt}
	\anchor{center}{\pgfpointorigin}
	\backgroundpath{%
    \pgfpathrectanglecorners
  	  {\pgfpointadd
				{\southwest}
				{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}
  	  {\pgfpointadd
				{\pgfpoint{\clean@args *6pt}{0}}
				{\pgfpointadd
					{\northeast}
					{\pgfpointscale{-1}{\pgfpoint{\pgfkeysvalueof{/pgf/outer xsep}}{\pgfkeysvalueof{/pgf/outer ysep}}}}}}
		\pgfusepathqstroke
		\ifnum\clean@args>0
			\southwest\clean@ya=\pgf@y
			\northeast\clean@yb=\pgf@y
			\clean@x=\pgf@x
			\foreach\arg in {1,...,\clean@args}{%
				\pgfpathmoveto{\pgfpoint{\clean@x}{\clean@yb}}
				\pgfpathlineto{\pgfpoint{\clean@x}{\clean@ya}}
				\pgfusepathqstroke
				\pgfpathcircle{\pgfpointadd{\pgfpoint{3pt}{.5\clean@yb}}{\pgfpoint{\clean@x}{.5\clean@ya}}}{1pt}
				\pgfusepathqfillstroke
				\global\advance\clean@x by 6pt
			}
		\fi
	}
}
