@startuml skinparam BackgroundColor F0F0F0 start :pass data to ATStream via write; if (isReady) then :return error (could be call reset, to get new data); Stop; endif :add new data to buffer; if (AT Return at the begin) then (yes) :Set "Return at the begin" flag; if (Expected line count= 0) then (yes) :(isReady=true); Stop; endif else (no) endif :Count lines from last position; if ("Return at the begin" flag is set) then (yes) if (More lines then expected) then (yes) :(isReady=true); Stop; endif else (no) if (AT Return at the end) then (yes) :(isReady=true); Stop; endif endif :Stream still wait for data (isReady=false); Stop; @enduml