+Set_Variable_If_At_Most_Nitrogen
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare nitrogen to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most nitrogen,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most nitrogen ${value_if_true} ${value_if_false}
+
+Set_Variable_If_At_Most_Oxygen
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare oxygen to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most oxygen,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most oxygen ${value_if_true} ${value_if_false}
+
+Set_Variable_If_At_Most_Fluorine
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare fluorine to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most fluorine,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most fluorine ${value_if_true} ${value_if_false}
+
+Set_Variable_If_At_Most_Neon
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare neon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most neon,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most neon ${value_if_true} ${value_if_false}
+
+Set_Variable_If_At_Most_Sodium
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare neon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most sodium,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most sodium ${value_if_true} ${value_if_false}
+
+Set_Variable_If_At_Most_Magnesium
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare magnesium to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most magnesium,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most magnesium ${value_if_true} ${value_if_false}
+
+Set_Variable_If_At_Most_Aluminium
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare aluminium to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most aluminium,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most aluminium ${value_if_true} ${value_if_false}
+
+Set_Variable_If_At_Most_Silicon
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare silicon to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most silicon,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most silicon ${value_if_true} ${value_if_false}
+
+Set_Variable_If_At_Most_Phosphorus
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare phosphorus to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most phosphorus,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most phosphorus ${value_if_true} ${value_if_false}
+
+Set_Variable_If_At_Most_Sulfur
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare sulfur to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most sulfur,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most sulfur ${value_if_true} ${value_if_false}
+
+Set_Variable_If_At_Most_Chlorine
+ [Arguments] ${value_if_true} ${value_if_false}
+ [Documentation] Compare chlorine to ${ODL_STREAM} and return ${value_if_true} if ${ODL_STREAM} is at most chlorine,
+ ... return ${value_if_false} otherwise.
+ BuiltIn.Run_Keyword_And_Return Set_Variable_If_At_Most chlorine ${value_if_true} ${value_if_false}
+
+CompareStream__Convert_Input
+ [Arguments] @{arguments}
+ [Documentation] Splits arguments into args and kwargs is used in Run_Keyword_If_At_Least_Else and Run_Keyword_If_At_Most_Else.
+ ... The problem is, when the string contains =, but it is not a named argument (name=value). There can be many values containing =, but
+ ... for sure it is present in xmls. If the string starts with "<" it will be treated as it is xml and splitting for
+ ... name and value will not be executed.
+ ... If named argument is passed into this kw, only string data are supported e.g. name=string. Complex variables such as lists or dictionaries
+ ... are not supported.
+ ${args} BuiltIn.Create_List
+ ${kwargs} BuiltIn.Create_Dictionary
+ FOR ${arg} IN @{arguments}
+ ${arg} BuiltIn.Convert_To_String ${arg}
+ ${removed} String.Remove_String ${arg} \n ${Space} \t
+ ... \r
+ ${splitted} BuiltIn.Run_Keyword_If "${removed[0]}" == "<" BuiltIn.Create List ${arg}
+ ... ELSE String.Split_String ${arg} separator== max_split=1
+ ${len} BuiltIn.Get_Length ${splitted}
+ Run Keyword If ${len}==1 Collections.Append_To_List ${args} ${splitted}[0]
+ ... ELSE Collections.Set_To_Dictionary ${kwargs} @{splitted}
+ END
+ BuiltIn.Return_From_Keyword ${args} ${kwargs}
+